package org.lzz.utils;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

public class JwtUtil {
    private static final String KEY = "lzz-yolo";
    // 生成token并返回
    public static String getToken(Map<String,Object> claims){
        return Jwts.builder()
                .setClaims(claims)//添加载荷
                .signWith(SignatureAlgorithm.HS256,KEY)//指定算法+配置密钥
                .setExpiration(new Date(System.currentTimeMillis() + 1000L *60*60*24*30))//添加有效时间(30days)，出现数值溢出需转成long类型
                // .setExpiration(new Date(System.currentTimeMillis() + 1000*60*60*12))//添加有效时间(12h)
                .compact();
    }

    // 接收token校验并返回载荷
    // 若token失效该方法则不会返回正确的数据且会抛出异常
    public static Map<String,Object> parseToken(String token){
        return Jwts.parser()
                .setSigningKey(KEY)
                .parseClaimsJws(token)
                .getBody();
    }
}
